A lightweight in-memory copy of the UI that makes updates cheap to compute.
Directly manipulating the real DOM is expensive — every change can trigger layout recalculation and repainting. The Virtual DOM sidesteps this by giving React a lightweight, plain-JavaScript-object representation of the UI to work with first. When state changes, React builds a new virtual tree, compares it against the previous one, and only then touches the real DOM — and only for the parts that actually changed.
This is often oversimplified as 'the Virtual DOM makes React fast,' which isn't quite right. The real benefit is batching and minimizing expensive DOM writes through diffing, not some inherent speed advantage of JS objects over DOM nodes. A hand-optimized vanilla JS app that updates the DOM surgically can outperform React — the Virtual DOM's value is making that kind of minimal-update behavior the default, without you having to hand-write it.
What you'll walk away knowing